import React, { Component } from 'react';
import MyPromise from './MyPromise';
export default class App extends Component {
  componentDidMount() {
    const p = () => {
      return new MyPromise((resolve, reject) => {
        setTimeout(() => {
          resolve(123);
        }, 1000);
      });
    };
    console.log('start');
    // MyPromise.all([p(), p(), 555]).then((res) => {
    //   console.log(res);
    // });
    // MyPromise.resolve(100)
    //   .then((res) => {
    //     console.log(res);
    //     throw new Error('error');
    //   })
    //   .catch((e) => {
    //     console.log(e);
    //     console.log(e.message);
    //   })
    //   .finally(() => {
    //     console.log('final');
    //   });

    // MyPromise.reject('e...')
    //   .catch((e) => {
    //     console.log(e);
    //   })
    //   .finally(() => {
    //     console.log('fff');
    //   });

    let pp1 = new MyPromise((resolve, reject) => {
      setTimeout(() => {
        // resolve(1);
        reject(1);
      }, 1000);
    });
    let pp2 = new MyPromise((resolve, reject) => {
      setTimeout(() => {
        // resolve(2);
        reject(2);
      }, 2000);
    });
    let pp3 = new MyPromise((resolve, reject) => {
      setTimeout(() => {
        // resolve(3);
        reject(3);
      }, 3000);
    });
    MyPromise.race([pp1, pp2, pp3])
      .then((res) => {
        console.log(res);
      })
      .catch((e) => {
        console.log(e);
      });
    console.log('end');
  }
  render() {
    return <h1 style={{ textAlign: 'center' }}>手写promise</h1>;
  }
}
